﻿#pragma once

#ifndef CHEMDLL_CHEMDLL_H
#define CHEMDLL_CHEMDLL_H

#ifdef _WIN32
#ifdef _USRDLL
#define CHEMDLL_API __declspec(dllexport)
#else
#define CHEMDLL_API __declspec(dllimport)
#endif
#else
#define CHEMDLL_API
#endif

CHEMDLL_API bool testChemDLL();

CHEMDLL_API BOOL WINAPI GCInitSystem(char *strMainPath, HWND pMainWnd, int32_t nMaxEntryCount, char *strTitle, BOOL bOffline);
CHEMDLL_API BOOL WINAPI GCExitSystem();
CHEMDLL_API BOOL WINAPI ChemLibOpenDataFile(int32_t nChannel, char *szFile, BOOL bByOrg, BOOL bLoadMethod, BOOL bReAnalysis); // 打开谱图文件
CHEMDLL_API BOOL WINAPI ChemLibWriteDataFile(int32_t nChannel, char *szFile, BOOL bUpdate, BOOL bSaveAs);                     // 保存谱图文件
CHEMDLL_API BOOL WINAPI ChemLibReadBaseLine(int32_t nChannel, char *szFile, BOOL bByOrg);
CHEMDLL_API BOOL WINAPI ChemLibExportDatData(int32_t nChannel, char *szFile, BOOL bCountFreqExcluded); // 保存谱图文件
CHEMDLL_API double WINAPI ChemLibGetORGFileY(int32_t nChannel, int32_t nIndex);
CHEMDLL_API double WINAPI ChemLibGetORGFileYDat(int32_t nChannel, int32_t nIndex);
CHEMDLL_API double WINAPI ChemLibGetORGFileYBsl(int32_t nChannel, int32_t nIndex);
CHEMDLL_API BOOL WINAPI ChemLibSetORGFileColumnLength(int32_t nChannel, double f);
CHEMDLL_API BOOL WINAPI ChemLibSetORGFileDeadTime(int32_t nChannel, double f);
CHEMDLL_API BOOL WINAPI ChemLibGetORGFileBagInf(int32_t nChannel, CTORGBag *p); // 取得通道对应的谱图的绘图信息
CHEMDLL_API BOOL WINAPI ChemLibSetORGFileBagInf(int32_t nChannel, CTORGBag *p); // 设置通道对应的谱图的绘图信息
CHEMDLL_API BOOL WINAPI ChemLibGetORGFileStatus(int32_t nChannel, CTORGFileStatus *p);
CHEMDLL_API BOOL WINAPI ChemLibGetMergeInfo(int32_t nChannel, int32_t *mergeCount, MergedInfo *mergeInfo);
CHEMDLL_API BOOL WINAPI ChemLibGetORGFile(int32_t nChannel, CTORGFile *p); // 取得通道对应的谱图
CHEMDLL_API BOOL WINAPI ChemLibSetORGFile(int32_t nChannel, CTORGFile *p); // 设置通道对应的谱图
CHEMDLL_API BOOL WINAPI ChemLibGetORGFile2(char *szFile, CTORGFile *p);
CHEMDLL_API BOOL WINAPI ChemLibSetORGFile2(char *szFile, CTORGFile *p);
CHEMDLL_API BOOL WINAPI ChemLibGetORGAxisEx(int32_t nChannel, TORGAxisEx *p);
CHEMDLL_API BOOL WINAPI ChemLibSetORGAxisEx(int32_t nChannel, TORGAxisEx *p);
CHEMDLL_API BOOL WINAPI ChemLibGetORGSmpCat(int32_t nChannel, TSmpCat *p);
CHEMDLL_API BOOL WINAPI ChemLibSetORGSmpCat(int32_t nChannel, TSmpCat *p);
CHEMDLL_API BOOL WINAPI ChemLibGetORGSmpInfo(int32_t nChannel, CTSmpInfo *p);
CHEMDLL_API BOOL WINAPI ChemLibSetORGSmpInfo(int32_t nChannel, CTSmpInfo *p);
CHEMDLL_API BOOL WINAPI ChemLibGetORGSmpInjHead(int32_t nChannel, TSmpInjHead *p);
CHEMDLL_API BOOL WINAPI ChemLibSetORGSmpInjHead(int32_t nChannel, TSmpInjHead *p);
CHEMDLL_API char *WINAPI ChemLibAnalysisError();
CHEMDLL_API BOOL WINAPI ChemLibReAnalysis(int32_t nChannel, BOOL bOnlyInteg);
CHEMDLL_API char *WINAPI ChemLibValidTprgEvent(int32_t nChannel, EVENT nEvent, float t1, float t2);
CHEMDLL_API char *WINAPI ChemLibGetResultList(int32_t nChannel, BOOL bMoreColumns, BOOL bHideUkPk);
CHEMDLL_API char *WINAPI ChemLibGetResultList2(char *szFile, BOOL bMoreColumns, BOOL bHideUkPk);
CHEMDLL_API char *WINAPI ChemLibGetSysList(int32_t nChannel, int32_t nPkUnitIdx);
CHEMDLL_API char *WINAPI ChemLibGetSysList2(char *szFile, int32_t nPkUnitIdx);
CHEMDLL_API char *WINAPI ChemLibGetSliceResult(int32_t nChannel, int32_t nUnitIdx);
CHEMDLL_API char *WINAPI ChemLibGetSliceResult2(char *szFile, int32_t nUnitIdx);
CHEMDLL_API char *WINAPI ChemLibGetSynResult(int32_t nChannel, char *szSynCExtColCaption);

CHEMDLL_API char *WINAPI ChemLibGetSynResult3(int32_t nChannel, char *szSynCExtColCaption, int32_t sortBy);
CHEMDLL_API char *WINAPI ChemLibGetSynResult2(char *szFile, char *szSynCExtColCaption);
CHEMDLL_API double WINAPI ChemLibCalcPkDrift(int32_t nChannel, double fDriftTs, double fDriftTe); // 计算漂移时间窗
CHEMDLL_API char *WINAPI ChemLibGetOtherStatus(int32_t nChannel);
CHEMDLL_API char *WINAPI ChemLibGetDriftS(int32_t nChannel, double pkDrift);                              // 计算漂移
CHEMDLL_API char *WINAPI ChemLibGetNoiseS(int32_t nChannel, double pkNoise);                              // 计算噪声
CHEMDLL_API char *WINAPI ChemLibGetAutoIPara(int32_t nChannel, double fAutoIParaTs, double fAutoIParaTe); // 计算自动积分参数
CHEMDLL_API char *WINAPI ChemLibGetPkWidth(int32_t nChannel, int32_t nPeakNo);                            // 计算自动峰宽
CHEMDLL_API char *WINAPI ChemLibGetPkNoise(int32_t nChannel, int32_t nPeakNo);                            // 计算自动噪声
CHEMDLL_API char *WINAPI ChemLibGetMinArea(int32_t nChannel, int32_t nPeakNo);                            // 计算最小面积
CHEMDLL_API char *WINAPI ChemLibGetMinHeight(int32_t nChannel, int32_t nPeakNo);                          // 计算最小峰高
CHEMDLL_API char *WINAPI ChemLibGetIntegralMethodDescript(int32_t nChannel);                              // 取得方法描述
CHEMDLL_API char *WINAPI ChemLibGetORGIntegralMethodDescript(int32_t nChannel);                           // 取得积分通道对应的谱图的使用的方法描述
CHEMDLL_API double WINAPI ChemLibSetIntegralMethodNoise(int32_t nChannel, double noise, double yUnitEx);
CHEMDLL_API double WINAPI ChemLibSetIntegralMethodMinArea(int32_t nChannel, double minArea, double yUnitEx);
CHEMDLL_API double WINAPI ChemLibSetIntegralMethodMinHeight(int32_t nChannel, double minHeight, double yUnitEx);
CHEMDLL_API double WINAPI ChemLibSetORGIntegralMethodNoise(int32_t nChannel, double noise, double yUnitEx);
CHEMDLL_API double WINAPI ChemLibSetORGIntegralMethodMinArea(int32_t nChannel, double minArea, double yUnitEx);
CHEMDLL_API double WINAPI ChemLibSetORGIntegralMethodMinHeight(int32_t nChannel, double minHeight, double yUnitEx);
CHEMDLL_API BOOL WINAPI ChemLibSetSmpCatName(int32_t nChannel, char *szSmpCatName); // 设置样品类型名字
CHEMDLL_API char *WINAPI ChemLibGetSmpCatName(int32_t nChannel);                    // 取得样品类型名字
CHEMDLL_API int32_t WINAPI ChemLibGetUVScanMax(int32_t nChannel);
CHEMDLL_API int32_t WINAPI ChemLibGetUVScanMin(int32_t nChannel);
CHEMDLL_API int32_t WINAPI ChemLibGetUVScanMode(int32_t nChannel);
CHEMDLL_API float WINAPI ChemLibGetUVScanStep(int32_t nChannel);
CHEMDLL_API void WINAPI ChemLibSetUVScanMax(int32_t nChannel, int32_t n);
CHEMDLL_API void WINAPI ChemLibSetUVScanMin(int32_t nChannel, int32_t n);
CHEMDLL_API void WINAPI ChemLibSetUVScanMode(int32_t nChannel, int32_t n);
CHEMDLL_API void WINAPI ChemLibSetUVScanStep(int32_t nChannel, float f);
CHEMDLL_API BOOL WINAPI ChemLibInitSmpMetricConc(int32_t nChannel, CTMetricConc *p, int32_t nSmpType, char *strSmpSn, char *strMethod);
CHEMDLL_API BOOL WINAPI ChemLibNewSmpMetricConc(int32_t nChannel, CTMetricConc *p, int32_t nSmpType, char *strSmpSn, char *strMethod);
CHEMDLL_API char *WINAPI ChemLibPasToUnitInf(int32_t nChannel, CTMetricConc *p, int32_t nSmpType, char *strSmpSn, char *strMethod);
CHEMDLL_API BOOL WINAPI ChemLibGetSmpMetricConc(int32_t nChannel, CTMetricConc *p, int32_t nSmpType, char *strSmpSn, char *strMethod);
CHEMDLL_API BOOL WINAPI ChemLibSetSmpMetricConc(int32_t nChannel, CTMetricConc *p, int32_t nSmpType, char *strSmpSn, char *strMethod);
CHEMDLL_API BOOL WINAPI ChemLibGetSmpMetricConc2(char *strCatName, CTMetricConc *p, int32_t nSmpType, char *strSmpSn, char *strMethod);
CHEMDLL_API BOOL WINAPI ChemLibSetSmpMetricConc2(char *strCatName, CTMetricConc *p, int32_t nSmpType, char *strSmpSn, char *strMethod);
CHEMDLL_API BOOL WINAPI ChemLibDeleteSmpMetricConc(int32_t nChannel, int32_t nSmpType, char *strSmpSn);
CHEMDLL_API BOOL WINAPI ChemLibDeleteSmpMetricConc2(char *strCatName, int32_t nSmpType, char *strSmpSn);
CHEMDLL_API BOOL WINAPI ChemLibExportAscForFingerPrint(int32_t nChannel, char *szFile); // 输出指纹
CHEMDLL_API BOOL WINAPI ChemLibResetSample(int32_t nChannel);                           // 重置Sample
CHEMDLL_API BOOL WINAPI ChemLibSetWMinutes(char *szCatName, int32_t smpType, float minutes);
CHEMDLL_API char *WINAPI ChemLibSetBlankInfo(int32_t nChannel, int32_t nBlankSubMode, int32_t nByOrg, char *szBlnkFile); // 设置基线扣除
CHEMDLL_API int32_t WINAPI ChemLibGetSynResultList(int32_t nChannel, TSynResultItem *p);
CHEMDLL_API int32_t WINAPI ChemLibGetSynResultList2(char *szFile, TSynResultItem *p);
CHEMDLL_API int32_t WINAPI ChemLibGetDLLResultList(int32_t nChannel, TDLLResultListItem *p);
CHEMDLL_API int32_t WINAPI ChemLibGetDLLResultList2(char *szFile, TDLLResultListItem *p);

// 以下是外部引用计算函数，移除ChemLib后直接对应原来程序的函数
CHEMDLL_API char *WINAPI ChemLibHPGGetGBTLimitValues(int32_t nChannel);
CHEMDLL_API char *WINAPI ChemLibHPGSetLevel(int32_t nChannel, int32_t nHPGLevel, BOOL *pORGFileChaned);
CHEMDLL_API BOOL WINAPI ChemLibSynResultAvailable(int32_t nCustomize);
CHEMDLL_API BOOL WINAPI ChemLibCheckMetricIstdConc(int32_t nChannel);
CHEMDLL_API BOOL WINAPI ChemLibIsHPGEdition();
CHEMDLL_API BOOL WINAPI ChemLibGetAllowGroupCalc();
CHEMDLL_API BOOL WINAPI ChemLibGetAllowSlicesCalc();
CHEMDLL_API BOOL WINAPI ChemLibGetAllowCalorif();
CHEMDLL_API BOOL WINAPI ChemLibGetAllowUkPkFactor();
CHEMDLL_API BOOL WINAPI ChemLibGetAllowBlankSub();
CHEMDLL_API BOOL WINAPI ChemLibGetAllowFingerPrint();
CHEMDLL_API BOOL WINAPI ChemLibGetAllowSequence();
CHEMDLL_API BOOL WINAPI ChemLibGetAllowIdtColBasedOn();
CHEMDLL_API BOOL WINAPI ChemLibGetAllowQCQA();
CHEMDLL_API void WINAPI ChemLibSetAllowQCQA(BOOL b);
CHEMDLL_API BOOL WINAPI ChemLibGetAllowExternEvents();
CHEMDLL_API BOOL WINAPI ChemLibGetAllowDataMerge();
CHEMDLL_API BOOL WINAPI ChemLibGetAllowResultsDB();
CHEMDLL_API BOOL WINAPI ChemLibHPGSetByFormula(BOOL bDefaultIdsByFormula);
CHEMDLL_API BOOL WINAPI ChemLibHPGGetByFormula();
CHEMDLL_API char *WINAPI ChemLibHPGTypeLevelCaptionOf(int32_t nHPGType, int32_t nHPGLevel, BOOL bEnglish, BOOL bFormula);
CHEMDLL_API char *WINAPI ChemLibHPGSetType(int32_t nChannel, int32_t nHPGType, BOOL *pORGFileChaned);
CHEMDLL_API int32_t WINAPI ChemLibGetInjSn(char *szRowName);

// 以下是对象接口
// 所有的对象都实现Init，Get，Set，Save，Load5个方法，Init是系统自动调用，可以忽略

//  MROption
CHEMDLL_API BOOL WINAPI ChemLibInitMROption();
CHEMDLL_API BOOL WINAPI ChemLibGetMROption(CTMROption *p);
CHEMDLL_API BOOL WINAPI ChemLibSetMROption(CTMROption *p);
CHEMDLL_API BOOL WINAPI ChemLibSaveMROption();
CHEMDLL_API BOOL WINAPI ChemLibLoadMROption();
// SmpSettings，对应实时通道
CHEMDLL_API BOOL WINAPI ChemLibInitSmpSettings(int32_t nChannel);
CHEMDLL_API BOOL WINAPI ChemLibGetSmpSettings(int32_t nChannel, CTSmpSettings *p);
CHEMDLL_API BOOL WINAPI ChemLibSetSmpSettings(int32_t nChannel, CTSmpSettings *p);
CHEMDLL_API BOOL WINAPI ChemLibSaveSmpSettings(int32_t nChannel);
CHEMDLL_API BOOL WINAPI ChemLibLoadSmpSettings(int32_t nChannel);
// CatInfo，对应实时通道
CHEMDLL_API BOOL WINAPI ChemLibInitCatInfo(int32_t nChannel, double dAnalMinutes, int32_t nSmpType, CTCatInfo *p);
CHEMDLL_API BOOL WINAPI ChemLibGetCatInfo(int32_t nChannel, CTCatInfo *p);
CHEMDLL_API BOOL WINAPI ChemLibSetCatInfo(int32_t nChannel, CTCatInfo *p);
CHEMDLL_API BOOL WINAPI ChemLibGetCatInfo2(char *strCatName, CTCatInfo *p);
CHEMDLL_API BOOL WINAPI ChemLibSetCatInfo2(char *strCatName, CTCatInfo *p);
CHEMDLL_API BOOL WINAPI ChemLibSaveCatInfo(char *strCatName);
CHEMDLL_API BOOL WINAPI ChemLibLoadCatInfo(char *strCatName);
CHEMDLL_API int32_t WINAPI ChemLibGetCatInfoCount();
CHEMDLL_API char *WINAPI ChemLibGetCatInfoName(int32_t nIndex);
// IntegralMethod，对应实时通道
CHEMDLL_API BOOL WINAPI ChemLibInitIntegralMethod(int32_t nChannel, CTIntegralMethod *p);
CHEMDLL_API BOOL WINAPI ChemLibGetIntegralMethod(int32_t nChannel, CTIntegralMethod *p);
CHEMDLL_API BOOL WINAPI ChemLibSetIntegralMethod(int32_t nChannel, CTIntegralMethod *p);
CHEMDLL_API BOOL WINAPI ChemLibSaveIntegralMethod(int32_t nChannel, char *szName);
CHEMDLL_API BOOL WINAPI ChemLibLoadIntegralMethod(int32_t nChannel, char *szName);
CHEMDLL_API BOOL WINAPI ChemLibGetORGIntegralMethod(int32_t nChannel, CTIntegralMethod *p);
CHEMDLL_API BOOL WINAPI ChemLibSetORGIntegralMethod(int32_t nChannel, CTIntegralMethod *p);
// DataMerge
CHEMDLL_API BOOL WINAPI ChemLibInitDataMerge();
CHEMDLL_API BOOL WINAPI ChemLibGetDataMerge(CTDataMerge *p);
CHEMDLL_API BOOL WINAPI ChemLibSetDataMerge(CTDataMerge *p);
CHEMDLL_API BOOL WINAPI ChemLibGetDataMerge2(CTDataMerge *p1, CTDataMerge *p2);
CHEMDLL_API BOOL WINAPI ChemLibSetDataMerge2(CTDataMerge *p1, CTDataMerge *p2);
CHEMDLL_API BOOL WINAPI ChemLibSaveDataMerge();
CHEMDLL_API BOOL WINAPI ChemLibLoadDataMerge();
// InstCond
CHEMDLL_API BOOL WINAPI ChemLibInitInstCond(int32_t nChannel, CTInstCond *p);
CHEMDLL_API BOOL WINAPI ChemLibGetInstCond(int32_t nChannel, CTInstCond *p);
CHEMDLL_API BOOL WINAPI ChemLibSetInstCond(int32_t nChannel, CTInstCond *p);
CHEMDLL_API BOOL WINAPI ChemLibSaveInstCond(int32_t nChannel, char *szName);
CHEMDLL_API BOOL WINAPI ChemLibLoadInstCond(int32_t nChannel, char *szName);
CHEMDLL_API BOOL WINAPI ChemLibGetCurrentInstCond(int32_t nChannel, CTInstCond *p);
CHEMDLL_API BOOL WINAPI ChemLibGetORGInstCond(int32_t nChannel, CTInstCond *p);
CHEMDLL_API BOOL WINAPI ChemLibSetORGInstCond(int32_t nChannel, CTInstCond *p);
// Instrument
CHEMDLL_API BOOL WINAPI ChemLibInitInstrument(int32_t nIdx, CTInstrument *p);
CHEMDLL_API BOOL WINAPI ChemLibGetInstrument(int32_t nIdx, CTInstrument *p);
CHEMDLL_API BOOL WINAPI ChemLibSetInstrument(int32_t nIdx, CTInstrument *p);
CHEMDLL_API BOOL WINAPI ChemLibSaveInstrument();
CHEMDLL_API BOOL WINAPI ChemLibLoadInstrument();
// SmpInfo
CHEMDLL_API BOOL WINAPI ChemLibInitSmpInfo(int32_t nChannel, CTSmpInfo *p);
CHEMDLL_API BOOL WINAPI ChemLibGetSmpInfo(int32_t nChannel, CTSmpInfo *p);
CHEMDLL_API BOOL WINAPI ChemLibSetSmpInfo(int32_t nChannel, CTSmpInfo *p);
CHEMDLL_API BOOL WINAPI ChemLibSaveSmpInfo(int32_t nChannel, char *szName);
CHEMDLL_API BOOL WINAPI ChemLibLoadSmpInfo(int32_t nChannel, char *szName);
// Channel Action
CHEMDLL_API BOOL WINAPI ChemLibLogin(int32_t nChannel);
CHEMDLL_API BOOL WINAPI ChemLibLogout(int32_t nChannel);
CHEMDLL_API BOOL WINAPI ChemLibStartSample(int32_t nChannel);
CHEMDLL_API BOOL WINAPI ChemLibStopSample(int32_t nChannel);
CHEMDLL_API BOOL WINAPI ChemLibAbortSample(int32_t nChannel);
CHEMDLL_API BOOL WINAPI ChemLibSimulateSample(int32_t nChannel);

CHEMDLL_API char *WINAPI ChemLibGetFileName(int nCh);
CHEMDLL_API BOOL WINAPI ChemLibSetFileName(int nCh, char *sFile);
CHEMDLL_API char *WINAPI ChemLibGetInstMethod(char *sFile);
CHEMDLL_API char *WINAPI ChemLibGetCurrentInstMethod(int nInstID);
CHEMDLL_API char *WINAPI ChemLibGetCurrentInstMethodName(int nInstID);
CHEMDLL_API BOOL WINAPI ChemLibSetCurrentInstMethodName(int nInstID, char *szName, bool bPrompt);
CHEMDLL_API BOOL WINAPI GCRefreshMethod(int nInstID, char *szInstMethod);
CHEMDLL_API BOOL WINAPI GCDownloadInstMethod(int nInstMethodID, char *szInstMethod);
CHEMDLL_API BOOL WINAPI ChemLibGetIntetConfig(int nInstID, int nInetID, bool *bPneumaticsOn, double *dInletPres, int *iPressureUnit);
CHEMDLL_API BOOL WINAPI ChemLibSetIntetConfig(int nInstID, int nInetID, bool bPneumaticsOn, double dInletPres);
CHEMDLL_API BOOL WINAPI ChemLibCurrentInstMethodSaveAs(int nInstID, char *szName);

CHEMDLL_API void WINAPI ChemLibWriteLog2(char *s);
CHEMDLL_API void WINAPI ChemLibSetMyAddInj(OnMyAddInj fnMyAddInj);
CHEMDLL_API void WINAPI ChemLibSetMyDataMerge(OnMyDataMerge fnMyDataMerge);
CHEMDLL_API void WINAPI ChemLibSetMyStopPostProcess(OnMyStopPostProcess fnMyStopPostProcess);
CHEMDLL_API void WINAPI ChemLibSetMyStopSample(OnMyStopSample fnMyStopSample);
CHEMDLL_API void WINAPI ChemLibSetMyStopPostReanal(OnMyStopPostReanal fnMyStopPostReanal);
CHEMDLL_API void WINAPI ChemLibSetMyStartSglRun(OnMyStartSglRun fnMyStartSglRun);
CHEMDLL_API void WINAPI ChemLibSetMyStopAbortSglRun(OnMyStopAbortSglRun fnMyStopAbortSglRun);
CHEMDLL_API void WINAPI ChemLibSetMyChromScroll(OnMyChromScroll fnMyChromScroll);
CHEMDLL_API void WINAPI ChemLibSetMyMyReAnalysis(OnMyReAnalysis fnMyReAnalysis);
CHEMDLL_API void WINAPI ChemLibSetMyWriteFile(OnMyWriteFile fnMyWriteFile);
CHEMDLL_API void WINAPI ChemLibSetMyReadFile(OnMyReadFile fnMyReadFile);
CHEMDLL_API BOOL WINAPI ChemLibOnGC1949BaseLine(int nCh, int *pData, int nLen, double xUnit);
CHEMDLL_API BOOL WINAPI ChemLibOnGC1949DataLine(int nCh, int nStartIndex, int *pData, int nLen, double xUnit);
CHEMDLL_API BOOL WINAPI ChemLibOnGC1949StartSample(int nCh);
CHEMDLL_API BOOL WINAPI ChemLibOnGC1949StopSample(int nCh);
CHEMDLL_API void WINAPI ChemLibPlaySound(char *szWaveFile);
CHEMDLL_API BOOL WINAPI ChemLibSetLinkup(BOOL bLink);
CHEMDLL_API void WINAPI GCSetFileFreq(int nCh, double dFreq);
CHEMDLL_API char *WINAPI GCSendCmd(int nInstID, char *szCmd);
CHEMDLL_API BOOL WINAPI GCPostCmd(int nInstID, char *szCmd);
CHEMDLL_API BOOL WINAPI ChemLibExportCDF(int Channel, char *szCdfFile);
CHEMDLL_API char *WINAPI ChemLibExportCDFJson(int Channel);

#endif